﻿#define _CRT_SECURE_NO_WARNINGS 1

#include <iostream>
#include <vector>
#include <string>

using namespace std;

//[2,3]，求种类2到种类3的方案数
//可以采用前缀和的思想
//先求种类[1,3]的方案数
//再求种类[1,1]的方案数
//前者剪去后者就可以得到[2.3]的方案数

//求种类为[1,2]之间的方案数
//abbcdef
//采用滑动窗口
//left指向第一个，right指向第一个
//方案数+1，即a
//right往后面走，指向第二个，种类数字为2.满足要求
//方案数加上以b为结尾的新方案，如b，ab
//方案数为3

int n, l, r;
string str;

long long GetPlan(int x)
{
    int left = 0, right = 0;
    int map[26] = { 0 };
    int sum = 0;//计算种类数字
    long long res = 0;//方案数
    while (right < n)
    {
        map[str[right] - 'a']++;
        if (map[str[right] - 'a'] == 1)//增加种类数
        {
            ++sum;
        }
        ++right;

        while (sum > x)//调整方案数
        {
            map[str[left] - 'a']--;
            if (map[str[left] - 'a'] == 0)
            {
                --sum;
            }
            ++left;
        }

        //ab，来了一个b，b,ab
        //加2
        if (sum <= x)
        {
            res += right - left + 1;
        }
    }

    return res;
}

int main()
{
    cin >> n >> l >> r;
    cin >> str;

    cout << GetPlan(r) - GetPlan(l - 1) << endl;
    return 0;
}

/*
链接：https://ac.nowcoder.com/acm/problem/260770
来源：牛客网

目描述
小红拿到了一个长度为n的字符串，她准备选取一段子串，
满足该子串中字母的种类数量在[l,r]之间。小红想知道，一共有多少种选取方案？
输入描述:
第一行输入三个正整数n,l,r
第二行输入一个仅包含小写字母的字符串。1≤n≤200000，1≤l≤r≤26
输出描述:
合法的方案数。

示例1
输入
3 2 2
aba
输出
3
*/

